const {ccclass, property} = cc._decorator;

@ccclass
export default class Skill_Cooling extends cc.Component {

    @property({type: cc.Float, displayName: "技能冷却时间", tooltip: "技能冷却时间"})
    time: number = 3;

    @property({displayName: "是否显示文字", tooltip: "是否显示文字"})
    isshow_label:boolean = true;

    // 显示技能冷却剩余时间的文字
    time_label:cc.Label = null;

    // 技能精灵
    skill: cc.Sprite = null;

    onLoad () {
        let self = this;

        // 获取技能精灵
        this.skill = this.node.getComponent(cc.Sprite);
        
        // 新建节点
        let node = new cc.Node;
        // 父节点为技能精灵
        node.parent = this.skill.node;
        // 设置坐标
        node.position = cc.v3(0, 0);
        // 添加label
        node.addComponent(cc.Label);
        // 获取label
        this.time_label = node.getComponent(cc.Label);
        // 设置字号
        this.time_label.fontSize = 30;
        this.time_label.lineHeight = 30;
        // 设置坐标
        this.time_label.node.position = cc.v3(0, 0);


        // 精灵类型为填充
        this.skill.type = cc.Sprite.Type.FILLED;
        // 锚点为中心
        this.skill.fillCenter = cc.v2(0.5, 0.5);
        // 填充为-1
        this.skill.fillRange = -1;


        // 获取图片
        let png = this.skill.spriteFrame;
        // 创建新的节点
        let sp = new cc.Node;
        // 父节点为技能精灵
        sp.parent = this.skill.node;
        // 设置坐标
        sp.position = cc.v3(0, 0);
        // 添加精灵组件
        sp.addComponent(cc.Sprite);
        // 设置显示的图片
        sp.getComponent(cc.Sprite).spriteFrame = png;
        // 透明度为80
        sp.opacity = 80;
    }

    update (dt:number) {
        if(this.skill.fillRange != -1){// 如果技能精灵的填充不为1 也就是说已经使用了技能
            // 技能剩余时间首先1 - 技能精灵的填充度再 * 技能冷却时间，最后Math.floor取整
            let num = ((1 - (- this.skill.fillRange)) * this.time);


            this.skill.fillRange -= dt / this.time;// 恢复技能   每帧恢复的值为帧率 / 技能冷却时间

            if(this.isshow_label == true){// 如果可以显示文字
                this.time_label.node.active = true;// 显示技能冷却剩余时间
            }



            if (num > 1) {
                this.time_label.string = Math.floor(num).toString();// 每帧更新技能剩余时间
            } else {
                this.time_label.string = (num).toFixed(1).toString();// 每帧更新技能剩余时间
            }

            // 禁用按钮
            this.node.getComponent(cc.Button).interactable = false;
        }
        else if (this.skill.fillRange == -1) {// 如果技能精灵的填充为1 也就是说技能还没被使用
            this.skill.node.getComponent(cc.Button).interactable = true;// 启动按钮
            this.time_label.node.active = false;// 隐藏技能冷却剩余时间

            // 启用按钮
            this.node.getComponent(cc.Button).interactable = true;
        }
    }

    onbtn(){// 按下技能按钮时的事件
        this.skill.fillRange = 0;// 技能填充范围设置为0
        console.log("使用了技能");// 打印log
        this.skill.node.getComponent(cc.Button).interactable = false;// 禁用按钮
    }

}